
//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include "vector"
#include "unordered_map"
#include "algorithm"

struct Selector{
    std::vector<char> selected;
    int select_cnt=0;
    std::vector<int> buf;
    int sum=0;
    int max=0;
    Selector(){
        selected.resize(5);
        buf.resize(25);
    }
    void clear_selected(){
        for (auto &a:selected) {
            a=0;
        }
    }
    bool input(){
        for (int & i : buf) {
            if(std::cin>> i){

            }else{
                return false;
            }
        }
        return true;
    }
    void choose_one_line(int n){
        if(n==5){
            if(sum>max){
                max=sum;
            }
        }
        for(int i=0;i<5;i++){
            if(!selected[i]){
                selected[i]=1;
                sum+=buf[n*5+i];
                choose_one_line(n+1);
                sum-=buf[n*5+i];
                selected[i]=0;
            }
        }
    }
    Selector& select(){
        choose_one_line(0);
        return *this;
    }
    void print(){
        printf("%d",max);
    }
};
int main() {
    int m,n;//行，列
//    int
//    is_huiwen(1441,10);]
//bool  first=true;
while(1){

    Selector s;
    auto a=s.input();
    if(!a){
        break;
    }
    s.select().print();
}
//    while(1){}
    return 0;
}

